home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / powerd / examples / ham8demo.d < prev    next >
Text File  |  2002-10-28  |  2KB  |  85 lines

  1. // draw 262144 colours, requies aga
  2.  
  3. OPT OSVERSION=37
  4.  
  5. MODULE    'intuition/intuition',
  6.             'exec/nodes',
  7.             'intuition/screens',
  8.             'intuition/gadgetclass',
  9.             'graphics/text',
  10.             'utility/tagitem'
  11.  
  12. ENUM    ER_NONE,ER_NOSCRN,ER_NOWINDOW
  13.  
  14. DEF    wnd=NIL:PTR TO Window,
  15.         scr=NIL:PTR TO Screen
  16.  
  17. PROC shutdown()
  18.     IF wnd THEN CloseWindow(wnd)
  19.     IF scr THEN CloseScreen(scr)
  20. ENDPROC
  21.  
  22. PROC setup()
  23.     IF (scr:=OpenScreenTagList(NIL,[
  24.             SA_Width,528,
  25.             SA_Height,512,
  26.             SA_Depth,8,
  27.             SA_DisplayID,$8804,
  28.             TAG_END]))=NIL THEN Raise(ER_NOSCRN)
  29.     IF (wnd:=OpenWindowTagList(NIL,[
  30.             WA_Left,0,
  31.             WA_Top,0,
  32.             WA_Width,528,
  33.             WA_Height,512,
  34.             WA_IDCMP,IDCMP_MOUSEBUTTONS,
  35.             WA_Flags,WFLG_SIMPLE_REFRESH|WFLG_NOCAREREFRESH|WFLG_ACTIVATE|WFLG_BORDERLESS,
  36.             WA_CustomScreen,scr,
  37.             TAG_END]))=NIL THEN Raise(ER_NOWINDOW)
  38. ENDPROC
  39.  
  40. PROC draw()
  41.     DEFL    r,loop1,loop2,loop3
  42.     r:=wnd.RPort
  43.     FOR loop1:=0 TO 7
  44.         FOR loop2:=0 TO 7
  45.             SetAPen(r,loop1*8+loop2+64)
  46.             Move(r,loop2*66,loop1*64)
  47.             Draw(r,loop2*66,loop1*64+63)
  48.             FOR loop3:=0 TO 63
  49.                 SetAPen(r,loop3+128)
  50.                 WritePixel(r,loop2*66+1,loop1*64+loop3)
  51. //                Move(r,loop2*66+1,loop1*64+loop3)
  52. //                Draw(r,loop2*66+1,loop1*64+loop3)
  53.                 SetAPen(r,loop3+192)
  54.                 Move(r,loop2*66+2+loop3,loop1*64)
  55.                 Draw(r,loop2*66+2+loop3,loop1*64+63)
  56.             ENDFOR
  57.         ENDFOR
  58.     ENDFOR
  59. ENDPROC
  60.  
  61. PROC waitmouse()
  62.     DEF    mes:PTR TO IntuiMessage,quit=FALSE
  63.     REPEAT
  64.         IF mes:=GetMsg(wnd.UserPort)
  65.             IF mes.Class=IDCMP_MOUSEBUTTONS THEN quit:=TRUE
  66.             ReplyMsg(mes)
  67.         ELSE
  68.             WaitPort(wnd.UserPort)
  69.         ENDIF
  70.     UNTIL quit
  71. ENDPROC
  72.  
  73. PROC main()
  74.     DEF    erlist:PTR TO LONG
  75.     setup()
  76.     draw()
  77.     waitmouse()
  78. EXCEPTDO
  79.     shutdown()
  80.     IF exception>0
  81.         erlist:=['open screen','open window']:LONG
  82.         EasyRequestArgs(0,[20,0,0,'Could not \s.','OK'],0,[erlist[exception-1]])
  83.     ENDIF
  84. ENDPROC
  85.